<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div class="a">
        <p>
            <span>1</span>
            11
        </p>
        <h3>
            <strong>2</strong>
        </h3>
        <div>
            <p>3</p>
        </div>
    </div>

    <script>


        // 事件
        // 事件源
        // 事件目标  target   (到最具体的子元素) offsetX   pointer-events:none
        // 事件流
        // 事件机制
        // 事件对象
        // 事件委托
        // 事件处理函数
        // 事件监听

        // 事件监听   绑定事件的一种方式而已
        //   onclick = function(){}    会覆盖    只支持冒泡
        //   addEventListener('click' , fn , bool)   不会覆盖    可以支持事件捕获



        // 事件委托
        //    原理：事件冒泡   子元素的同类型事件会触发父元素加的同类型的事件
        //    子元素的事件委托给了父元素
        //    优势：
        //        减少事件处理函数
        //        可以给未来的对象添加事件



        // 购物车
        //    点击事件
        oCart.onclick = function(e) {
            if(e.target.className === '') {}
            if(e.target.className === '') {}
            if(e.target.className === '') {}
        }
        // oCart.addEventListener('click',function(e) {
        //     if(e.target.className === '') {}
        //     if(e.target.className === '') {}
        //     if(e.target.className === '') {}
        // })
        //    键盘事件
        oCart.onkeydown = function(e) {
            if(e.target.className === '') {}
            if(e.target.className === '') {}
            if(e.target.className === '') {}
        }
        //    表单事件 




    </script>
    
</body>
</html>